﻿Imports StartFrame.Web.BR.Helpers
Imports StartFrame.Web.BR
Imports Common.GrupoOperador

Namespace Mantenimiento.Articulos

    Public Class Art
        Inherits JsonAbm

        ''' <summary>
        ''' Esta clase se encarga de la administración de los reportes o consultas contempladas por la aplicación.
        ''' </summary>
        ''' Constructor
        Sub New()
            MyBase.New(Operador, Password, "XRArt", "App_Articulo")
            MyBase.lnk_nombreOperador = Common.Env.Operador
            'Graba tracking
            Me.lnk_Tracking = True
        End Sub

        Private Sub Art_Insertado(ByRef row As System.Data.DataRow) Handles Me.Insertado
            Dim sbQuery As New Text.StringBuilder
            sbQuery.AppendLine("INSERT INTO dbo.App_novedad ( descripcion, fecha_hora, id_usuario, informada, id_articulo)")
            sbQuery.AppendLine(String.Format("SELECT 'Se agrego el articulo {0}' , GETDATE(), wo.cd_operador ,0, '{1}'", row("descripcion").ToString(), row("id_articulo").ToString()))
            sbQuery.AppendLine("FROM dbo.wad_operadores wo")
            sbQuery.AppendLine("INNER JOIN dbo.wld_miembros_grupo wmg ON wo.cd_operador = wmg.cd_operador")
            sbQuery.AppendLine("WHERE wmg.cd_grupo_operadores = 'COMERCIO'")
            DA.Sql.Exec(Common.Env.ConnectionString, sbQuery.ToString())

            Dim emailCom As String = String.Join(",", (From x As DataRow In DA.Sql.Select(Common.Env.ConnectionString, "email", "App_entidad", "id_perfil = 'C'").Tables(0).Rows
                                      Select x("email")).ToArray())
            Try
                Email.EnviarEmail(emailCom, String.Format("Se agrego un articulo el dia {0}.{1}Para poder visualizarlo debera hacer click en el siguiente enlace {2}?idarticulo={3}", DateTime.Now, Environment.NewLine, New Uri(System.Web.HttpContext.Current.Request.Url, System.Web.VirtualPathUtility.ToAbsolute("~/Default.aspx")).ToString(), row("id_articulo").ToString()))
            Catch ex As Exception
                'Interceptar este error e informar que no se pudo enviar el mail
                Throw ex
            End Try
        End Sub

        Private Sub Art_Modificado(ByRef row As System.Data.DataRow) Handles Me.Modificado
            If row("precio", DataRowVersion.Original) <> row("precio") Then
                Dim sbQuery As New Text.StringBuilder
                sbQuery.AppendLine("INSERT INTO dbo.App_novedad ( descripcion, fecha_hora, id_usuario, informada, id_articulo)")
                sbQuery.AppendLine(String.Format("SELECT  'El articulo {0} cambio de precio {1:0.00} a {2:0.00}' , GETDATE(), wo.cd_operador ,0, '{3}'", row("descripcion"), row("precio", DataRowVersion.Original), row("precio"), row("id_articulo").ToString()))
                sbQuery.AppendLine("FROM dbo.wad_operadores wo")
                sbQuery.AppendLine("INNER JOIN dbo.wld_miembros_grupo wmg ON wo.cd_operador = wmg.cd_operador")
                sbQuery.AppendLine("WHERE wmg.cd_grupo_operadores = 'COMERCIO'")
                DA.Sql.Exec(Common.Env.ConnectionString, sbQuery.ToString())

                Dim emailCom As String = String.Join(",", (From x As DataRow In DA.Sql.Select(Common.Env.ConnectionString, "email", "App_entidad", "id_perfil = 'C'").Tables(0).Rows
                                      Select x("email")).ToArray())
                Try
                    Email.EnviarEmail(emailCom, String.Format("Se modifico el precio de un articulo el dia {0}.{1}Para poder visualizarlo debera hacer click en el siguiente enlace {2}?idarticulo={3}", DateTime.Now, Environment.NewLine, New Uri(System.Web.HttpContext.Current.Request.Url, System.Web.VirtualPathUtility.ToAbsolute("~/Default.aspx")).ToString(), row("id_articulo").ToString()))
                Catch ex As Exception
                    'Interceptar este error e informar que no se pudo enviar el mail
                    Throw ex
                End Try
            End If
        End Sub

        Private Sub Art_Validando(ByRef cancela As Boolean, ByRef paramDataTable As System.Data.DataTable) Handles Me.Validando
            Dim row As DataRow
            'Recorre todos los registros de la tabla
            For Each row In paramDataTable.Rows
                If row.RowState <> DataRowState.Deleted Then
                    'Valida campo obligatorio id_articulo
                    If IsDBNull(row("id_Articulo")) OrElse row("id_Articulo").ToString = String.Empty Then
                        row.SetColumnError("id_articulo", "El campo identificador es obligatorio.")
                        cancela = True
                    End If
                    'Valida campo obligatorio código
                    If IsDBNull(row("codigo")) OrElse row("codigo").ToString = String.Empty Then
                        row.SetColumnError("codigo", "El campo Código es obligatorio.")
                        cancela = True
                    End If
                    'Valida campo obligatorio descripción
                    If IsDBNull(row("descripcion")) OrElse row("descripcion").ToString = String.Empty Then
                        row.SetColumnError("descripcion", "La descripción del artículo es obligatoria.")
                        cancela = True
                    End If
                    'Valida campo obligatorio id_entidad
                    If IsDBNull(row("id_entidad")) OrElse row("id_entidad").ToString = String.Empty Then
                        row.SetColumnError("id_entidad", "El campo entidad proveedor es obligatorio.")
                        cancela = True
                    End If
                    'Valida campo obligatorio marca
                    If IsDBNull(row("marca")) OrElse row("marca").ToString = String.Empty Then
                        row.SetColumnError("marca", "El campo Marca es obligatorio.")
                        cancela = True
                    End If
                    'Valida campo obligatorio id_rubro
                    If IsDBNull(row("id_rubro")) OrElse row("id_rubro").ToString = String.Empty Then
                        row.SetColumnError("id_rubro", "El rubro del artículo es obligatorio.")
                        cancela = True
                    End If
                    'Valida campo obligatorio id_categ_art
                    If IsDBNull(row("id_categ_art")) OrElse row("id_categ_art").ToString = String.Empty Then
                        row.SetColumnError("id_categ_art", "El campo categoría de artículo es obligatorio.")
                        cancela = True
                    End If
                    'Valida campo obligatorio unid_venta
                    If IsDBNull(row("unid_venta")) OrElse row("unid_venta").ToString = String.Empty Then
                        row.SetColumnError("unid_venta", "El campo unidad de venta es obligatorio.")
                        cancela = True
                    End If
                    'Valida campo obligatorio unid_empaque
                    If IsDBNull(row("unid_empaque")) OrElse row("unid_empaque").ToString = String.Empty Then
                        row.SetColumnError("unid_empaque", "El campo categoría de empaque es obligatorio.")
                        cancela = True
                    End If
                    'Valida campo obligatorio medida_empaque
                    If IsDBNull(row("medida_empaque")) OrElse row("medida_empaque").ToString = String.Empty Then
                        row.SetColumnError("medida_empaque", "El campo medida de empaque es obligatorio.")
                        cancela = True
                    End If
                    'Valida campo obligatorio precio
                    If IsDBNull(row("precio")) OrElse row("precio").ToString = String.Empty Then
                        row.SetColumnError("precio", "El precio del artículo es obligatorio.")
                        cancela = True
                    End If
                    'Valida campo obligatorio iva1
                    If IsDBNull(row("iva1")) OrElse row("iva1").ToString = String.Empty Then
                        row.SetColumnError("iva1", "El porcentaje de I.V.A es obligatorio.")
                        cancela = True
                    End If
                    'Valida campo obligatorio iva2
                    If IsDBNull(row("iva2")) OrElse row("iva2").ToString = String.Empty Then
                        row.SetColumnError("iva2", "El porcentaje de I.V.A Adicional es obligatorio.")
                        cancela = True
                    End If
                End If
            Next
        End Sub

        Public Overrides Function List(Start As Integer, Limit As Integer, Orden As String, Filtro As String) As String
            Dim oFiltro As FiltroColeccion = FiltroColeccion.Parse(Filtro)
            If (Common.GrupoOperador.ID.Trim().ToUpper() = "PROVEEDOR") Then oFiltro.AgregarEQFilter("id_entidad", Common.EntidadOperador.ID)
            Return MyBase.List(Start, Limit, Orden, oFiltro.ToJSON())
        End Function
    End Class

End Namespace
